/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tablero;

import java.math.*;

/**
 *
 * @author Joshua
 */
public class Movimientos {

    public Boolean movimientos(String ficha, String jugador, int X, int Y, int Xant, int Yant, Ficha[][] tablero) {
        if(ficha.equals("t")){
           if (X == Xant || Y == Yant) {
               if(X==Xant){
                   if(Y<Yant){
                       for(int i=Y+1; i<Yant;i++){
                           if(tablero[i][X]!=null){
                               return false;
                           }
                       }
                       return true;
                   }
                   else{
                       for(int i=Yant+1; i<Y;i++){
                           if(tablero[i][X]!=null){
                               return false;
                           }
                       }
                       return true;
                   }
               }
               else{
                   if(X<Xant){
                       for(int i=X+1; i<Xant;i++){
                           if(tablero[Y][i]!=null){
                               return false;
                           }
                       }
                       return true;
                   }
                   else{
                       for(int i=Xant+1; i<X;i++){
                           if(tablero[Y][i]!=null){
                               return false;
                           }
                       }
                       return true;
                   }
               }
           } else {
               return false;
           } 
        }
        else if(ficha.equals("a")){
            if (X + Y == Xant + Yant || X - Y == Xant - Yant) {
                if(X + Y == Xant + Yant){
                   if(X<Xant){
                       for(int i=0; i<Xant-X-1;i++){
                           if(tablero[Y-i-1][X+i+1]!=null){
                               return false;
                           }
                       }
                       return true;
                   }
                   else{
                       for(int i=0; i<X-Xant-1;i++){
                           if(tablero[Yant-i-1][Xant+i+1]!=null){
                               return false;
                           }
                       }
                       return true;
                   }
               }
               else{
                   if(X<Xant){
                       for(int i=0; i<Xant-X-1;i++){
                           if(tablero[Yant-1-i][Xant-1-i]!=null){
                               return false;
                           }
                       }
                       return true;
                   }
                   else{
                       for(int i=0; i<X-Xant-1;i++){
                           if(tablero[Yant+1+i][Xant+1+i]!=null){
                               return false;
                           }
                       }
                       return true;
                   }
               }
            } else {
                return false;
            }
        }
        else if(ficha.equals("d")){
            return (movimientos("t", jugador, X, Y, Xant, Yant, tablero) ||
                    movimientos("a", jugador, X, Y, Xant, Yant, tablero));
        }
        else if(ficha.equals("r")){
            if (Math.abs(X - Xant) < 2  && Math.abs(Y - Yant) < 2) {
                return true;
            }
            else {
                return false;
            }  
        }
        else if(ficha.equals("c")){
            if ((Math.abs(X - Xant) == 2 && Math.abs(Y - Yant) == 1) ||
                    (Math.abs(X - Xant) == 1 && Math.abs(Y - Yant) == 2)){
                return true;
            } else {
                return false;
            }
        }
        else if(ficha.equals("p")){
            if(jugador.equals("b")&&Yant>Y || jugador.equals("n")&&Yant<Y){
                if (X == Xant && (Math.abs(Y - Yant) == 1 || (Math.abs(Y - Yant) == 2 
                        && (Yant==1 || Yant==6)))){
                    if(tablero[Y][X]==null){
                        return true;
                    }
                    else{
                        return false;
                    }
                }
                else if(Math.abs(Y - Yant) == 1 && Math.abs(X - Xant) == 1){
                    if(tablero[Y][X]!=null){
                        return true;
                    }
                    else if(tablero[Yant][X]!=null && !tablero[Yant][X].color.equals(tablero[Yant][Xant].color)){
                        return true;
                    }
                    else{
                        return false;
                    }
                }
                else{
                    return false;
                }
            }
            else{
                return false;
            }
        }
        else{
            return false;
        }
    }
    
    public Boolean jaque(String jugador, int X, int Y,Ficha[][] tablero){
        String salida="";
                for(int i=0;i<8;i++){
                    for(int j=0; j<8;j++){
                        if(tablero[i][j]!=null){
                            salida += tablero[i][j].tipo+tablero[i][j].color +" ";
                        }
                        else{
                            salida +="   ";
                        }
                    }
                    salida+= "\n";
                }
        System.out.println(salida);
        for(int i=0;i<8;i++){
            for(int j=0;j<8;j++){
                if(tablero[i][j]!=null && !tablero[i][j].color.equals(jugador)){
                    if(movimientos(tablero[i][j].tipo, tablero[i][j].color,  X, Y, j, i,tablero)){
                        //System.out.println(tablero[i][j].tipo+" "+ tablero[i][j].color);
                        //System.out.println(tablero[Y][X].tipo+" "+ tablero[Y][X].color);
                        return true;
                    }
                }
            }
        }
        return false;
    }
}

    